package main

func main() {

}

// 134 https://leetcode.cn/problems/gas-station
// 我们首先检查第 0 个加油站，并试图判断能否环绕一周；如果不能，就从第一个无法到达的加油站开始继续检查。
func canCompleteCircuit(gas []int, cost []int) int {
	n := len(gas)
	i := 0

	for i < n {
		arriveNum := 0 //能到达的节点数量
		sumGas := 0
		sumCost := 0
		for arriveNum < n {
			j := (i + arriveNum) % n //当前所在的节点
			sumGas += gas[j]
			sumCost += cost[j]
			if sumGas < sumCost {
				break
			}
			arriveNum++
		}
		if arriveNum == n {
			return i
		} else {
			i = i + arriveNum + 1
		}
	}
	return -1
}
